package main

import (
	"fmt"                // 格式化包，用于字符串格式化和错误处理
	"gin_gorm_oj/core"   // 核心功能模块，包含数据库连接等基础功能
	"gin_gorm_oj/models" // 数据模型模块，定义系统中的数据结构
	"gin_gorm_oj/router" // 路由模块，负责HTTP请求的路由配置
)

// main 函数是应用程序的入口点，负责初始化系统组件并启动服务
func main() {

	// 执行数据库自动迁移，创建或更新数据表结构
	err := core.DB.AutoMigrate( // 调用GORM的AutoMigrate方法进行数据迁移
		&models.Problem{},  // 迁移Problem模型到数据库表
		&models.Category{}, // 迁移Category模型到数据库表
		&models.Submit{},   // 迁移Submit模型到数据库表
		&models.User{},     // 迁移User模型到数据库表
		&models.ProblemCategory{},
		&models.TestCase{},
	)
	if err != nil { // 检查迁移过程中是否出现错误
		panic(fmt.Sprintf("数据库迁移失败: %v", err)) // 如果出错则终止程序并输出错误信息
		return                                 // 错误处理后返回（实际上panic后不会执行到这里）
	}

	r := router.Router() // 初始化路由配置，获取Gin引擎实例
	r.Run()              // 监听并在 0.0.0.0:8080 上启动HTTP服务
}
